package example.day03;

public class _00_三元运算符Demo {
    public static void main(String[] args) {
        int a = 1;
        int b = 5;

        /**
         * 三元表达式的格式：
         *   布尔值?值1:值2
         *
         *
         * 仔细对比如下两句话的差别
         * 深刻理解  变量的赋值
         * a+10 不会改变a
         * a+=10 则会对a重新赋值，就改变了a
         */
        int c1 = (a + 10) > b ? (a + 1) : (b - 10);  // 2
        int c2 = (a += 10) > b ? (a + 1) : (b + 2);  // 12

        int c3 = a == 1 ? a : b + 1;

        int c4 = true ? a : b * 10;

        int c5 = false ? a : b * 10;

        int c6 = true & false ? a : b * 10;

        int c7 = true && false ? a : b * 10;

        int c8 = a > 10 && b > 10 ? a : b;  // 5

        boolean c9 = a > 10 && b > 10 ? a > 10 : a < 10;  //


        // int c = (a > 10 && b > 10) ? (a > 10) : b-10;  // 错误语句，两个值的类型不一致

        /**
         * 但这样又对，为何？
         *
         * 三元表达式本身，并不要求值1和值2的类型一致
         * 上面的语句错在赋值给一个变量c，而c的类型不可能是两种！
         */
        System.out.println( ((a > 10 && b < 10) ? (a > 10) : b-10) );


        int x = (1+3)*5;


        int y = 4+4>>2;
        System.out.println(y);




    }
}
